const defaultValue = () => {
	return {
		basicInfoDefault: {
			sensitiveId: '',
			responsibleDept: '', //责任部门
			responsibleDeptId: '', //责任部门id
			budgetUnit: '', //预算单位
			budgetUnitId: '', //预算单位id
			leadDept: '', //牵头部门
			leadDeptId: '', //牵头部门ID
		},
		designUnitInfo: {
			socialCode: '', //信用代码
			designUnit: '', //单位名称
		},
		applyInfoDefault: {
			appName: '', //应用名称
			principalName: '', //负责人
			principalPhone: '', //负责人电话
			appConstructionType: '', //应用建设类型
			projectType: '', //应用建设类型：1-新建，2-续建，3-首次运维，4-连续运维
			budgetYear: '', //应用预算年度
			developBeginDate: '', //应用开发起始时间
			developEndDate: '', //应用开发终止时间
			domain: '', //应用领域 1数字党建、2数字政务、3数字经济、4数字社会、5数字文化、6数字法治、7数字智治
			yearBudget: '', //应用年度预算（万元）
			totalBudget: '', //应用总投资(万元)
			fundResource: [], //资金来源(逗号拼接多选)：1-中央财政资金，2-市级财政资金，3-区县财政资金，4-部门自筹资金，5-银行贷款等投资，6-其他
			otherFund: '', //其他资金来源名称
			centerAmount: '', //中央财政资金万元
			cityAmount: '', //市级财政资金(万元)
			districtAmount: '', //区县财政资金(万元)
			deptAmount: '', //部门自筹资金(万元)
			bankAmount: '', //银行自筹资金(万元)
			otherAmount: '', //其他(万元)
			hierarchy: [], //建设层级 1国家、2省级、3市级、4区县、5镇街
			mode: [], //建设模式 1统一开发、共同使用； 2统一开发、分级部署； 3统筹规划、分级开发
			localization: '', //是否国产化 0否1是
		},
	};
};
//判断 是否是多维数据
const isMultiDimensionalArray = (arr: any) => {
	// 首先检查arr是否是数组
	if (!Array.isArray(arr)) {
		return false;
	}

	// 遍历数组中的每个元素
	for (let i = 0; i < arr.length; i++) {
		// 如果元素是数组，则显然是多维数组
		if (Array.isArray(arr[i])) {
			return true;
		}
		// 如果元素本身也是数组，递归检查
		else if (isMultiDimensionalArray(arr[i])) {
			return true;
		}
	}

	// 如果没有找到数组元素，则是一维数组或不是数组
	return false;
};
const findNameByName = (trees: any, id: string) => {
	for (const node of trees) {
		if (node.id === id) {
			return node.name;
		}
		if (node.children) {
			const name: string = findNameByName(node.children, id);
			if (name) return name; // 如果在子节点中找到了ID，返回名称
		}
	}
	return null; // 如果没有找到ID，返回null
};

//对象中的字段值从字符串转换为数字
const convertStringNumbers = (obj: any) => {
	return Object.keys(obj).reduce((acc: any, key: any) => {
		const value = obj[key];
		// 判断字段值是否为字符串，并且尝试转换为数字
		if (typeof value === 'string'&&value.length<9) {
			const number: any = value.replace(/^,|,$/g, ''); // 去除字符串两端的空白字符
			const parsedNumber = isNaN(number) ? number : Number(number);
			acc[key] = parsedNumber;
		} else {
			acc[key] = value; // 如果不是字符串，直接使用原值
		}
		return acc;
	}, {});
};
//去除空字串串
const removeEmptyStringsDeep = (obj: any) => {
	let newObj: any = Array.isArray(obj) ? [] : {};
	Object.keys(obj).forEach((key) => {
		const value = obj[key];
		if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
			newObj[key] = removeEmptyStringsDeep(value);
		} else if (value !== '') {
			newObj[key] = value;
		}
	});
	return newObj;
};

const setKeyValue = (obj1: any, obj2: any) => {
	let obj3: any = {};
	for (let key in obj1) {
		if (obj2.hasOwnProperty(key)) {
			obj3[key] = obj2[key];
		}
	}
	return { ...obj1, ...obj3 };
};
export { setKeyValue, defaultValue, convertStringNumbers, removeEmptyStringsDeep, findNameByName, isMultiDimensionalArray };
